package cn.kinoko.service.minio.impl;

import cn.kinoko.common.base.model.BaseServiceImpl;
import cn.kinoko.common.constant.Flag;
import cn.kinoko.mapper.minio.MinioObjReferenceMapper;
import cn.kinoko.model.minio.MinioObjReference;
import cn.kinoko.service.minio.MinioObjReferenceService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author kinoko
 */
@AllArgsConstructor
@Service
public class MinioObjReferenceServiceImpl extends BaseServiceImpl<MinioObjReferenceMapper, MinioObjReference> implements MinioObjReferenceService {

    /**
     * 取消文件引用
     *
     * @param keyList key列表
     */
    @Override
    public void dereference(List<String> keyList) {
        lambdaUpdate().in(MinioObjReference::getObjKey, keyList).set(MinioObjReference::getStatus, Flag.NO).update();
    }

    /**
     * 保存未引用文件
     *
     * @param filePath 文件路径
     */
    @Override
    public void saveUnReferenced(String filePath) {
        MinioObjReference objReference = new MinioObjReference();
        // 设置文件key
        objReference.setObjKey(filePath);
        // 设置未引用，在绑定业务数据时置为引用
        objReference.setStatus(false);
        save(objReference);
    }
}